package cn.wang.service.sysadmin.Impl;

import cn.wang.dao.BaseDao;
import cn.wang.entity.sysadmin.Module;
import cn.wang.entity.sysadmin.Role;
import cn.wang.service.sysadmin.ModuleService;
import cn.wang.service.sysadmin.RoleService;
import cn.wang.utils.Pagination;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.sql.Timestamp;
import java.util.List;

/**
 * Created by john on 2017/11/1.
 */
@Service("moduleService")
@Transactional
public class ModuleServiceImpl implements ModuleService {

    @Autowired
    private BaseDao<Module,String>baseDao;


    @Override
    public Pagination findPage(int pageNo, int pageSize) {
        return baseDao.pageByHql("from Module",pageNo,pageSize);
    }

    @Override
    public List<Module> findAll() {
        return baseDao.getListByHQL("from Module");
    }

    @Override
    public Module findById(String id) {
        return baseDao.get(Module.class,id);
    }

    @Override
    public void save(Module model) {
       //将父类id设为从属id
        model.setParentId(model.getBelong());
        //通过从属id查寻出丛属模块信息 添加 所属名字 和remack(模块查询时动态值)
        Module parentmodule= baseDao.get(Module.class,model.getParentId());
        model.setParentName(parentmodule.getName());
        model.setRemark(parentmodule.getRemark());

        baseDao.save(model);
    }

    @Override
    public void delete(String[] ids) {
        for (String id :ids) {
            baseDao.deleteById(Module.class,id);
        }
    }

    @Override
    public void update(Module model) {
        //查询出老数据 将老数据不变的设置到新数据
        Module oldModule=baseDao.get(Module.class,model.getId());
        //清楚一级缓存
        baseDao.evcit(oldModule);
        model.setCreateTime(oldModule.getCreateTime());
        //TODO 记录跟新人
        model.setUpdateTime(new Timestamp(System.currentTimeMillis()));
        model.setParentId(model.getBelong());
        //通过从属id查寻出丛属模块信息 添加 所属名字 和remack(模块查询时动态值)
        Module parentmodule= baseDao.get(Module.class,model.getParentId());
        model.setParentName(parentmodule.getName());
        model.setRemark(parentmodule.getRemark());
        baseDao.update(model);
    }
}
